

/**
 * 可选头结构体类，用于解析PE文件中的可选头。可选头提供了关于DLL或可执行文件的大量信息，
 * 包括入口点地址、图像基地址、节对齐方式等。
 * @author tongxin
 * @date 2024/4/18 22:05
 */
 export class OptionalHeader {
    magic?:number; // 标识可选头的魔数
    majorLinkerVersion?:number; // 链接器主要版本号
    minorLinkerVersion?:number; // 链接器次要版本号
    sizeOfCode?:number; // 可执行代码的大小
    sizeOfInitializedData?:number; // 初始化的数据大小
    sizeOfUninitializedData?:number; // 未初始化的数据大小
    addressOfEntryPoint?:number; // 程序的入口点地址
    baseOfCode?:number; // 代码区的基地址
    baseOfData?:number; // 数据区的基地址
    imageBase?:number; // 映像的首选加载地址
    sectionAlignment?:number; // 节的对齐方式
    fileAlignment?:number; // 文件的对齐方式
    majorOperatingSystemVersion?:number; // 操作系统主要版本号
    minorOperatingSystemVersion?:number; // 操作系统次要版本号
    win32VersionValue?:number; // Win32版本值
    sizeOfImage?:number; // 映像的大小
    SizeOfHeaders?:number; // 头部的大小
    checkSum?:number; // 映像的校验和
    subsystem?:number; // 程序的子系统类型
    dllCharacteristics?:number; // DLL特性
    sizeOfStackReserve?:number; // 栈保留大小
    sizeOfStackCommit?:number; // 栈提交大小
    sizeOfHeapReserve?:number; // 堆保留大小
    sizeOfHeapCommit?:number; // 堆提交大小
    loaderFlags?:number; // 负责加载映像的加载器标志
    numberOfRvaAndSizes?:number; // 数据目录的数量及其大小

    /**
     * 构造函数，用于初始化可选头字段。
     * @param byteArray 代表可选头的字节数组
     */
    constructor(byteArray:IByteArray) {
    }

}

